package tests;

import static com.google.appengine.api.datastore.FetchOptions.Builder.withLimit;
import static org.junit.Assert.assertEquals;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Query;
import com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig;
import com.google.appengine.tools.development.testing.LocalServiceTestHelper;

import edu.idei.anteweb.repositories.OrganizaciónRepository;

public class OrganizaciónRepositoryTest {

	private final LocalServiceTestHelper helper = new LocalServiceTestHelper(
			new LocalDatastoreServiceTestConfig());

	private OrganizaciónRepository organizaciónRepository = new OrganizaciónRepository();

	@Before
	public void setUp() {
		helper.setUp();
	}

	@After
	public void tearDown() {
		helper.tearDown();
	}

	// run this test twice to prove we're not leaking any state across tests
	private void doInsert() {
		DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
		assertEquals(0,
				ds.prepare(new Query("Organización")).countEntities(withLimit(10)));
		organizaciónRepository.addOrganización("UNSJ");
		organizaciónRepository.addOrganización("Gobierno de San Juan");
		organizaciónRepository.addOrganización("Instituto de Informática");
		assertEquals(3,
				ds.prepare(new Query("Organización")).countEntities(withLimit(10)));
	}

	@Test
	public void testInsert1() {
		doInsert();
	}

	@Test
	public void testInsert2() {
		doInsert();
	}
}